User interface and geo-parsing data structure

ABSTRACT

A method to allocate memory, in response to application requests, for a compact data structure having location data and a trailer section is provided. The trailer section of the compact data structure is checked to determine an offset for listings and indices representing the location data. Upon determining the offset, the listings and indices are loaded into memory and responses to the application requests are generated by utilizing the listings and indices stored in the memory.

PRIORITY

This patent claims the benefit of and is a continuation of U.S.application Ser. No. 14/152,210, which was filed on 10 Jan. 2014; whichis a continuation of U.S. application Ser. No. 13/572,974, filed on 13Aug. 2012, now U.S. Pat. No. 8,635,231, issued 21 Jan. 2014; which is acontinuation of U.S. application Ser. No. 12/764,276, filed on 21 Apr.2010, now U.S. Pat. No. 8,271,562, issued 18 Sep. 2012; which is adivisional of U.S. application Ser. No. 11/196,387, filed on 4 Aug.2005, now abandoned; and each of the above applications is incorporatedherein by reference in their entirety.

BACKGROUND

Currently, the Internet is an outstanding resource for receivingdirectional information for points-of-interest or landmarks. Typically,a user inputs address information to specify an origin and destination.The user provides information that represents a street, city, state, orzip for the origin and destination. After providing all necessaryinformation the user sends the address information to a server thatgenerates the directional information.

When the address information for the origin or destination is incompleteor mistakenly transcribed, entering the address information may becomevery tedious. For instance, a user that enters address information forthe destination and origin but provides an incorrect zip code for thedestination and sends the address information to the server may receivea response from the server indicating that the zip code for thedestination is invalid. This is an inefficient response, which imposes aburden on the user to find a correct zip code and increases the amountof time before the user receives the directional information. Moreover,the server storing the address information may include a large databasethat increases the response time because the server inefficiently storesand accesses the address information.

SUMMARY

A compact geo-parsing data structure efficiently generates directionalinformation and enables automatic completion or correction of addressinformation. The compact geo-parsing data structure includes a header,body and trailer section. The header section includes metadata about theinformation stored in the data structure. The body section includeslocation data utilized to correct or complete the address information.The trailer section provides applications with information on how toaccess the data structure. Moreover, the trailer section providesversion information to allow data sources to update the compact datastructure. Accordingly, applications that request directionalinformation may utilize the compact geo-parsing data structure tovalidate the address information.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended totbe used as an aid in determining the scope of the claimed subjectmatter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram of an exemplary computing environmentutilized by embodiments of the invention;

FIG. 2 illustrates an exemplary format for a geo-parsing data structureutilized by embodiments of the invention;

FIG. 3 illustrates a graphical user interface utilized by embodiments ofthe invention;

FIG. 4 illustrates a flow diagram of a method to allocate memory for thegeo-parsing data structure utilized by embodiments of the invention;

FIG. 5A and FIG. 5B illustrate screen shots of fields on the graphicaluser interface utilizing the geo parsing data structure; and

FIG. 6 illustrates a flow diagram of a method to provide selections thatcomplete partial address information.

DETAILED DESCRIPTION

Embodiments of the invention provide a compact data structure thatprovides client side validation of address information. The datastructure is loaded into memory and organized to reduce the number ofdisk accesses required to process a request for directional information.Moreover, a graphical user interface that receives the addressinformation utilizes the compact data structure to automatically corrector complete the address information. Also, the graphical user interfaceutilizes the data structure to copy-and-paste or drag-and-drop theaddress information from other applications. Accordingly, embodiments ofthe invention provide the data structure and graphical user interface toefficiently process address information.

FIG. 1 illustrates a block diagram of an exemplary computing environment100 utilized by embodiments of the invention. The computing environment100 is not intended to suggest any limitation as to scope orfunctionality. Embodiments of the invention are operable with numerousother special purpose computing environments or configurations. Withreference to FIG. 1, the computing environment 100 includes clientcomputers 110, server computers 130, data sources 120 and acommunication network 140.

The client and server computers 110 and 130 each have processing units,coupled to a variety of input devices and computer-readable media viacommunication buses. The computer-readable media may include computerstorage and communication media that are removable or non-removable andvolatile or non-volatile. By way of example, and not limitation,computer storage media includes electronic storage devices, opticalstorages devices, magnetic storage devices, or any medium used to storeinformation that can be accessed by client computers 110, andcommunication media may include wired and wireless media. The inputdevices may include, mice, keyboards, joysticks, controllers,microphones or any suitable device for providing user input to theclient computers 110.

Additionally, the client computers 110 may store application programs112 that provide computer-readable instructions to implement variousheuristics. In an embodiment of the invention, the client computers 110store a compact data structure 116 that provides address information.The compact data structure communicates with application programs 112via an application programming interface (API) 114. The API receivesapplication requests and accesses the compact data structure 116 togenerate responses to the application requests. Application requests mayinclude copy-and-paste or drag-and-drop requests.

The client computers 110 communicate with data sources 120 and servercomputers 130 over the communication network 140. The communicationnetwork 140 may be a local area network, a wide area network, or theInternet. The client computers 110 may include laptops, smart phones,personal digital assistants, and desktop computers. The server computers130 may include map servers, search engines, or web servers. The servercomputers 130 may receive address information and generate directionalinformation based on the address information. The data sources 120 mayinclude individuals or companies that gather information on changes inaddress information, such as, for example, a creation or destruction ofa zone-improvement-plan code (zip code). The information collected bythe data sources 120 is periodically sent to client computers 110 toupdate the compact data structure 116. Accordingly, the compact datastructure 116 provides a current representation of the addressinformation in a geographic region. The computing environmentillustrated in FIG. 1 is exemplary and other configurations are withinthe scope of the invention.

FIG. 2 illustrates an exemplary format for a geo-parsing data structure200 utilized by embodiments of the invention. In an embodiment of theinvention the compact data structure 116 may be implemented by thegeo-parsing data structure 200. The geo-parsing data structure 200organizes address information that includes approximately 18,000city-state combinations to allow applications to efficiently access theaddress information. In an embodiment of the invention, the geo-parsingdata structure 200 is optimized for address information for the UnitedStates of America. In alternate embodiments of the invention, thegeo-parsing data structure 200 may include international addressinformation.

With reference to FIG. 2 the geo-parsing data structure 200 includes aheader 210, body 220 and trailer 230 sections. The trailer sectionprovides layout information for the geo-parsing data structure 200,which enables an application to access the address information. In anembodiment of the invention, the address information is stored in littleendean format. The trailer section 230 may include magic, version, andoffset attributes that provide the application with the layoutinformation. Table 1 provides a description of some attributes includedin the trailer section 230 of the geo-parsing data structure 200. In anembodiment of the invention, all unsigned Long (ulong) type data isassumed to be 4 bytes long, all unsigned Short (ushort) type data isassumed to be 2 bytes long and all unsigned byte (ubyte) type data isassumed to be 1 byte long.

TABLE 1 Name Size Description Magic 4 bytes Magic verifies that this isindeed a zip data file (ulong) Version 4 bytes Version is provided forforward and backward (ulong) compatibility Offset to the 4 bytes Theoffset array provides an index of offsets Offset Array (ulong) into therelevant lists (See Table 2)

The magic attribute specifies whether the geo-parsing data structure 200has been compressed using a file compression technology such as, forexample, ZIP, or RAR. The version attribute allows data sources 120 toupdate or modify the address information stored in the geo-parsing datastructure 200. The version attribute allows the geo-parsing datastructure 200 to be dynamic. As described below, the body 220 of thegeo-parsing data structure may include various lists. The number oflists represented in the body 220 varies depending on the versionattribute. The application may require that the geo-parsing datastructure 200 have a minimum version number. In an embodiment of theinvention, the application checks the version of the geo-parsing datastructure to determine whether the geo-parsing data structure 200 isupdated. Moreover, when the lists included in the body 220 are updatedto include new streets, new zip code, the version attribute may beincremented by a specified unit. Moreover, the version attribute may beincremented when the body 220 is updated to include application-specificindices, such as, for example, an index that may speed up responses toapplication requests by arranging cities based on a specified numbercharacters of the city name. In an embodiment of the invention, thespecified number of characters is two and the index is referred to as anab city index. The offset attribute specifies a location in thegeo-parsing data structure 200 where an offset array is stored. Thus,the offset attribute provides an entry point into the geo-parsing datastructure at which the address information is stored.

The offset array is a collection of offset-count pairs for various listsand indices included in the body 220 of the geo-parsing data structure200. An offset-count pair specifies the location of a list in thegeo-parsing data structure 200 and the size of the list. The offsetarray enables an application to efficiently access the addressinformation stored in the geo-parsing data structure 200. When thegeo-parsing data structure 200 is updated to include future lists orindices, the offsets to the list or indices are added to the end of theoffset array. In an embodiment of the invention, the list and indicesare stored in an order that is most useful for the application, such as,for example, an order in which locality of reference is optimized. Table2 below provides a description of the offset array included in the body220 of the geo-parsing data structure 200. In an embodiment of theinvention, if the offset is set to −1, the list or index does not exist.

TABLE 2 Offset & Count Access Description Offset(ulong) city-state- Thisis a list of cities with the states in count(ulong) zip list which acity with that name occurs and the zip codes within that city listed foreach city. Offset(ulong) state-city The list of cities in each statecount(ulong) list Offset(ulong) zip-state- The state and city for eachzip code count(ulong) city list with an overflow in case a zip codeextends to multiple cities Offset(ulong) city list The list of citiescount(ulong) offset(ulong) state list The list of states count(ulong)offset(ulong) zip list The list of zip codes (this is a sparsecount(ulong) array) Offset(ulong) ab city The index into the city listin the “AB” count(ulong) index format. Meaning, given the first one ortwo letters, the offset into the first entry in the city list thatbegins with the given letter(s) is stored for quick access.Offset(ulong) city index The index into the city list. The firstcount(ulong) entry points to the first city name in the city list, thesecond to the second in city list and so on. This serves dual purposesone, a given city can be quickly located in the city list and two, agiven city name can be referenced anywhere in four bytes. offset(ulong)zip index The index into the zip list, which is a count(ulong) sparsearray. This index has one entry per every interval of n numbers(interval size may be changed later, but currently n = 50) - meaning,the first entry points to the first zip code, second points to the firstzip code entry >=50 when treated as a number, third to the first zipcode >=100 when treated as a number and so forth.

The body 220 includes an offset array that provides offset-count pairsfor, a city list, a state list, a zip list, a zip-state-city list, acity-state-zip list, a state-city list, an ab city index, a city index,and a zip index. The offset array may include other offset count-pairsnot described in Table 2 above. The lists and indices represented by theoffset-count pairs will be described in more detail below.

The city list provides a list of all cities represented in thegeo-parsing data structure 200. The city list also includes the name ofthe city and length of the city name. The city list also, stores offsetsto locations in the geo-parsing data structure 200 that references eachcity. The city list may have the structure illustrated in Table 3 below.

TABLE 3 Name Size Description City-State-Zip ulong The offset into thecity-state-zip list offset list described below. Length ubyte The lengthof the city name City name variable string The city name, as a string ofconsecutive characters

The city list avoids the storage of duplicates city names and providesthe names of all the cities and locations where the cities are listed,such as, for example, in the city-state-zip list.

The state list provides a representation of all states in thegeo-parsing data structure. The state list provides a name, which may beabbreviated, for each states and a length of the name. The state listalso includes an offset to locations in the geo-parsing data structure200 that reference each state. The state list may have the structureillustrated in Table 4 below.

TABLE 4 Name Size Description State-City Ulong The offset into the listof cities in offset this state (State-City list) Length Ubyte The lengthof the state code. State code variable string Typically two bytes.

The state list provides the state names and references to locations inthe state-city list providing references to all cities for acorresponding state. In an alternate embodiment of the invention, thestates are not abbreviated.

The zip list provides all valid zip codes, each entry indicates the city(or cities, in case of an overflow) and state for each zip code. The ziplist includes an overflow bit, offsets to location in the geo-parsingdata structure 200 for each state and city represented within the statelist and city list. The zip list may have the structure illustrated inTable 5 below.

TABLE 5 Name Size Comments Overflow 1 bit Most zip codes exist in onlyone city. But present? (part of some (very few) may span multiplecities. zip code To accommodate that possibility, we reserve below) thetop bit of the zip code field to indicate if there is an overflow. Incase of overflow, the overflowed data is stored in the zip-state-cityoverflow list described later in this document. Zip code Ushort The zipcode (valid values range from 0-99999) State Index Ushort The index intothe list of states City Index Ushort The index into the list of cities

The zip list may be a fixed size to enable applications to quicklylocate a zip code by using a zip index that stores zip code entries inincrements of n. Therefore, dividing the zip code by n provides anapproximate location of the zip in the zip index. The zip index isaccessed at the approximate location and a segment of the zip listcorresponding to the approximate location is read into the memory andlinearly traversed to locate the zip code. In an alternate embodiment ofthe invention, the zip code may be located via a divide-and-conquerstrategy.

The zip-state-city list is an overflow list that represents zip codesthat cover more than one city or state. The zip-state-city list providesa count of the number of cities or states in the overflow list and anindex or pointer in the city or state list that represents the city orstate included in the overflow list. The zip-state-city list may havethe structure illustrated in Table 6 below.

TABLE 6 Name Size Description Count Ubyte How many items are in thisoverflow list? List Variable array A list of the following structures:Name Size Comments State Ubyte The index of the Index state in the statelist City Ushort The index of the Index city in the city list

A zip code normally represents distinct geographic regions. However,development of the geographic regions represented by the zip code maycause two cities to share the zip code. Accordingly, the overflow listallows representation of cities sharing a zip code.

The city-state-zip list organizes the states and zip codes based on cityname. Each city in the United States of America may have one or moreentries in the city-state-zip list. The city-state-zip list may includea count, state index and zip code. The information stored in thecity-state-zip list may be organized according to the layout shown inTable 7 below.

TABLE 7 Name Size Description Count Ushort The number of state-zip pairsassociated with this city name. State Index Ubyte The index into thestate list Zip code Ushort The zip code in question.

For instance, a city called Springfield may be located in more than 5states. Accordingly, the count specifies the number of state-zip pairsthat includes a city having the name Springfield. For each state-zippair, a state index specifies a location in the state list havinginformation about the state, and the zip code specifies the zip codeassociated with the city and state. Accordingly, Springfield may havemore than five state-zip pairs.

The state-city list provides a listing of cities in each state. Thestate-city list gives the number of cities in each state, and an indexor pointer to each city stored in the city list. Each of the entries inthis list follows the structure as illustrated in Table 8 below.

TABLE 8 Name Size Description Count Ushort The number of cities in thisstate City Index Ushort The index into the city list.

For instance, “District of Columbia,” would have a count representingone city and the index would point to an entry storing “Washington” inthe city list. Accordingly, once a state is chosen the list of validcities in the state are listed and if only one city is within theselected state, the city is automatically selected and presented to auser.

The ab city, city and zip indices provide references or points to citylist, or zip list. The ab city index provides offset to each city basedon at least the first two characters of each city name. For instance,“Ch” will provide references to all cities stored within the geo parsingdata structure 200 that begin with “Ch” to facilitate fast access to thelist of cities. The city index provides references or points to eachcity in the city list. The reference allows a city and the informationassociated with the city to be retrieved based on the reference. The zipindex may be a sparse list, having references that represent zip codesin increments of n, such as, for example, fifty. In an embodiment ofinvention, each index may be implemented as an array of references.Accordingly, the geo-parsing data structure 200 provides a complex datadomain in a compact and searchable format. Also, the geo-parsing datastructure 200 may be memory mapped to provide efficient access toaddress information. Moreover, some lists, such as the city list may bepreloaded based on access frequency. Therefore, all address informationcan be accessed efficiently on demand with a minimum number of seeks,and applications utilizing the geo-parsing data structure 200 may readconsecutive memory blocks storing address information with the size ofthe read known ahead of time.

FIG. 3 illustrates a graphical user interface 300 utilized byembodiments of the invention. The graphical user interface 300 providesa form where a user may enter address information to retrievedirectional or map information. The graphical user interface 300includes a section for location A 310 and location B 320, an ok button330 and a cancel button 340.

The location A 310 and location B 320 sections provide fields where auser can enter address information. The location A and B sections 310and 320 include paste address buttons 311 and 321 that allow a user topopulate the address fields using information copied from anotherapplication. The paste address buttons 311 and 321 enable acopy-and-paste functionality on the graphical user interface 300. Thelocation A and B sections 310 and 320 include a previous locations field312 and 322 that lists addresses that were entered previously at eachsection. The previous locations field 312 and 322 allows a user toquickly access previous address information. The location A and Bsections 310 and 320 provide address fields 313 and 323, city fields 314and 324, state fields 315 and 325 and zip code fields 316 and 326. Eachfield collects information pertaining to a portion of addressinformation that specifies location A and B 310 and 320. A getdirections check box 317 allows a user to specify whether to retrieve amap or directions from location A to B. When the get directions checkbox 317 is checked, the user is presented with the directionalinformation. Additionally, the user can specify the type of directionalinformation presented by utilizing the direction option 327, route typeoption 328 or map style option 329. The direction option 327 allows theuser to specify which location should be the origin. The route typeoption 328 specifies whether the user prefers a short or quick route,and the map style option 329 allows the user to specify how thedirectional information is displayed. The graphical user interface 300allows the address information to be copied and pasted using the pasteaddress buttons 311 and 321 as either location A or B 310 or 320. In anembodiment of the invention, a user is restricted from completingaddress information in location B 320 until at least city, zip, or stateinformation for location A 310 is provided in fields 314, 315 or 316.The restriction may be presented by preventing access to location B 320or graying out fields on location B, such as for example, fields322-329.

In addition to the copy-and-paste functionality, the graphical userinterface 300 allows a user to drag-and-drop address information from anapplication to the graphical user interface 300. The graphical userinterface 300 utilizes the geo-parsing data structure 200 to validate orcomplete the address information retrieved from copy-and-paste ordrag-and-drop actions of the user. Address information and surroundingtext can be drag-and-dropped or copy-and-pasted from any applicationonto the graphical user interface 300 and parsed to extract theappropriate address information to set the fields of location A and B310 and 320 with valid address information. The API receives the addressinformation and parses the address information utilizing the geo-parsingdata structure 200 to validate and correct or complete addressinformation. Accordingly, the geo-parsing data structure providesclient-side validation and reduces messages transmitted when anincomplete or incorrect address is sent to a map server or searchengine.

Also, the geo-parsing data structure 200 enables numerous efficiencieswhen entering address information. In an embodiment of the invention,when a user partially types in a city or state, the user receives an“auto-complete” of the state or city, which may be received from the abcity index and sent to the graphical user interface 300. FIGS. SA andFIG. 5B illustrate screen shots of fields on the graphical userinterface 300 utilizing the geo parsing data structure 200. Withreference to FIG. SA, when a user types “Sp” in the city field 314, theuser is presented with a set of cities beginning with “Sp.” Once anappropriate city is selected, “Spade,” the state and zip fields 314 and315 or 324 and 325 are restricted to states and zips that are related tothe selected city. If there is only one city with the name specified bythe user, then the state and zip code fields 315 and 316 or 325 or 326are immediately filled and need not be filled in by a user. Withreference to FIG. 5B, when a city that is present in multiple states isentered by the user in the city fields 314 or 324, and a state isselected in the state field 315 or 325, the zip code fields 316 and 326are restricted to zip codes applicable to that particular city. If thereis only one zip code associated with the city, the zip code field 316 or326 is automatically filled in. When a zip code is provided in zip codefields 316 or 326, the city and state fields 314 and 315 or 324 and 325are automatically filled without further user intervention. Moreover,when a city and state are selected, the zip code fields 316 or 326 iscapable of auto completion because the zip codes are restricted to zipcodes related to city and state. For instance, if the user specifies thestate to be Washington and the city to be Redmond, the zip code field326 is restricted to valid zip codes in the Redmond area. When there isonly one zip code associated with the city, that zip code is selectedand the user does not have to enter zip code information. Accordingly,the geo-parsing data structure 200 allows applications utilizing formsor interfaces that collect address information, similar to graphicaluser interface 300, to quickly validate and complete or correct theaddress information.

FIG. 4 illustrates a flow diagram of a method to allocate memory for thegeo-parsing data structure utilized by embodiments of the invention.

The method begins in step 410, after the geo-parsing data structure 200is installed on client computer 110. The API 114 associated with thegeo-parsing data structure 200 receives application requests containingaddress information, in step 420. The API 114 retrieves the offset fromthe geo-parsing data structure 200, in step 430. The offset points tolocations in the geo-parsing data structure 200 storing the list andindices, and the API 114 loads the list and indices into memory, in step440. The API 114 processes the address information, utilizing the listand indices loaded into memory, in step 450. The method ends in step460.

The geo-parsing data structure 200 is a compact and efficient storageformat that enables the validation of address information. Thegeo-parsing data structure 200 may be implemented as a browser extensionor an operating system utility. Accordingly, applications executing onclient computer 110 can utilize the geo-parsing data structure 200.

FIG. 6 illustrates a flow diagram of a method to provide selections thatcomplete partial address information.

The method begins in step 610, which may occur after the geo-parsingdata structure 200 has been loaded into memory. In step 620 partialaddress information is received at a client computer from one or moreapplications executing on the client computer 110 via a client computeraction, such as, for example, copy-and-paste or drag-and drop. Thepartial address information is parsed to determine the missing portionsof the partial address information, in step 630. The missing portionsmay relate to a city, state, or zip code, etc. The geo-parsing datastructure 200 is traversed to determine the address information for themissing portions, in step 640. The address information associated withthe missing portions is selectively displayed, in step 650. The methodends in step 660.

The partial address information includes information relating to alocation of a point of interest, business, or residence. The partialaddress information includes information related to fields of thegraphical user interface 300. In an embodiment of the invention partialaddress information omits information related to one or more of thefields 313-316 or 323-326 of either location A 310 or location B 320.Furthermore, the partial address information may include informationthat is incorrectly transcribed. The omitted information is a missingportion that will complete the partial address information, and thegeo-parsing data structure 200 is consulted to find address informationrelated to the missing portions of the partial address information. Whena user enters partial address information, such as, for example, addressinformation missing only state information, the partial addressinformation is parsed to determine the information related to the fieldsthat are omitted. For instance, the partial address information enteredby the user is parsed to detect that state information is missing, andthe geo-parsing data structure 200 is consulted to determine the stateinformation corresponding to the omitted information utilizing thereceived zip or city information. The state information corresponding tothe missing portion is selectively displayed on a display device at theclient computer. Accordingly, the partial address information isvalidated to ensure that the address information has been enteredproperly and the geo-parsing data structure 200 provides information tocomplete the partial address information. In an embodiment of theinvention, applications that have complete address information mayutilize the geo parsing data structure 200 to validate the completeaddress information.

In sum, applications in communications with an API and a geo-parsingdata structure can process address information to validate, correct, orcomplete the address information. The geo-parsing data structure is adynamic structure that may be transmitted from one or more data sourcesand stored on client computers to provide efficient access to addressinformation for locations represented by the geo-parsing data structure.Alternative embodiments of the invention provide a graphical userinterface having a plurality of fields utilizing a compact datastructure having address information to auto-complete the plurality offields, the graphical user interface includes a first set of theplurality of fields to receive a first address information, a second setof the plurality of fields to receive a second address information, andpaste buttons to automatically fill in the plurality of fieldsassociated with the first and second address information. When the firstor second address information is copied, depressing the paste buttonsautomatically fills in appropriate fields with the copied addressinformation. Also, if the first or second address information is draggedand dropped onto the graphical user interface appropriate fields arecompleted. Automatically filling in the plurality of fields includesparsing the first or second address information provided by a user, andrestricting a set of options presented to the user when either a city orzip code is entered into the graphical user interface. The compact datastructure enables the validation of the first or second addressinformation, because the compact data structure stores valid addressinformation. Accordingly, the compact data structure auto-completes thefirst or second address information with valid address information. Theforegoing descriptions of the invention are illustrative, andmodifications in configuration and implementation will occur to personsskilled in the art. For instance, while the invention has generally beendescribed with relation to FIGS. 1-6, those descriptions are exemplary.Although the subject matter has been described in language specific tostructural features or methodological acts, it is to be understood thatthe subject matter defined in the appended claims is not necessarilylimited to the specific features or acts described above. Rather, thespecific features and acts described above are disclosed as exampleforms of implementing the claims. The scope of the invention isaccordingly intended to be limited only by the following claims.

We claim:
 1. A computer-implemented method by a computing deviceincluding a processor and a memory to provide selections that completepartial address information utilizing an improved storage format of acompact data structure including address information, the methodcomprising: receiving by the processor the partial address informationat a graphical user interface having a set of fields for geographiclocations, wherein the partial address information completes less thanall of the fields included in the set of fields; parsing by theprocessor the partial address information to determine missing portionsof the partial address information; locating by the processor in thecompact data structure offsets to the address information correspondingto the missing portions, wherein the compact data structure organizesgeographic location information and includes a header section, a trailersection and a body section, wherein the header section provides metadatato a plurality of applications, the trailer section specifies at leastthe offsets allowing the plurality of applications to access the datastructure and a version allowing one or more data sources to update thedata structure, and the body section having the address informationrepresented by a plurality of offset count pairs, and wherein theoffsets to address information specifies the location in the compactdata structure where the address information corresponding to themissing portions of the partial address information from the request isstored; and generating by the processor, for selective display, a set ofoptions that includes the address information corresponding to themissing portions that complete a subset of the set fields in thegraphical user interface and restricts the set of options to a number ofpotential addresses that complete the partial address information. 2.The method according to claim 1, further comprising validating thepartial address information.
 3. The method according to claim 1, furthercomprising completing the fields of the missing information based onuser selections that complete the partial address received at thegraphical user interface.
 4. The method according to claim 1, furthercomprising restricting states and zip codes selectively displayed in azip code field and a state field of the missing information to statesand zip codes related to a city included in the partial addressinformation.
 5. The method according to claim 3, further comprisingrestricting cities and states selectively displayed in a state field anda city field of the missing information to cities and states related toa zip code included in the partial address information.
 6. The methodaccording to claim 1, wherein the compact data structure ismemory-mapped.
 7. A method to allocate memory by a computing deviceincluding a processor and a memory for a data structure having addressinformation stored in an improved storage format the method comprising:receiving by the processor an application request; checking by theprocessor a trailer portion of the data structure, wherein the datastructure includes a header section, a trailer section and a bodysection, wherein the header section provides metadata to a plurality ofapplications, the trailer section specifies at least the offsetsallowing the plurality of applications to access the data structure anda version allowing one or more data sources to update the datastructure, and the body section having the address informationrepresented by a plurality of offset count pairs, and wherein theoffsets to address information specifies the location in the compactdata structure where the address information corresponding to themissing portions of the partial address information from the request isstored; retrieving by the processor an offset to a set of lists andindices from the trailer portion of the data structure; loading by theprocessor the set of lists and indices into the memory; and processingby the processor the application request with the set of lists andindices to generate a response.
 8. The method according to claim 7,wherein retrieving the offset to the set of lists and indices from thetrailer portion of the data structure further comprises: determiningwhether an application-specific index exists in the data structure, andwhen the application-specific index exists, retrieving theapplication-specific index in addition to the set of lists and indices.9. The method according to claim 7, wherein the application request isan auto-complete, validation, or driving direction request.
 10. Themethod according to claim 7, wherein at least one of the indicesincluded in the set of list and indices is a sparse index.
 11. Themethod according to claim 7, wherein the set of list and indicesprovides offset-count pairs that represent location data.
 12. The methodaccording to claim 10, wherein processing the application request withthe set of lists and indices to generate a response further comprises:utilizing a divide and conquer strategy to search the sparse index. 13.The method according to claim 11, wherein the location data includescities, roads, or points of interest.
 14. A computing device havingprocessors and memories, wherein the memories store computer-executableinstructions and an compact data structure including address informationstored in an improved storage format, the computer-executableinstructions perform a method to provide selections that completepartial address information utilizing the address information, and thecomputing device further comprising: the compact data structure whichorganizes geographic location information and includes a trailer sectionspecifying at least a version and an offset to location data, whereinthe trailer section allows a plurality of applications to access thedata structure, and the version allows one or more data sources toupdate the data structure, a body section having the location datarepresented by a plurality of offset count pairs, and a header sectionproviding metadata to the plurality of applications, and wherein theoffset to location data specifies the location in the compact datastructure where the address information corresponding to the missingportions of the partial address information from the request is stored;an input component which provides an application request having partialaddress information; and a display component which renders a graphicaluser interface having a set of fields for geographic locations, whereinthe partial address information completes less than all of the fieldsincluded in the set of fields, and the display component is updated bygenerating, for selective display based on the location data stored inthe compact data structure, a set of options that includes addressinformation corresponding to missing portions that complete a subset ofthe set fields in the graphical user interface.
 15. The computing deviceof claim 14, wherein the location data includes cities, roads, or pointsof interest.
 16. The computing device of claim 14, wherein the set ofoptions is restricted to a number of potential addresses that completepartial address information in the graphical user interface.
 17. Thecomputing device of claim 14, wherein the applications executing on thecomputing device read at least one of the plurality of offset-countpairs to determine a location of a list of cities in the data structure,and a number of cities in the list of cities.
 18. The computing deviceof claim 14, wherein the compact data structure is in a compressedformat.
 19. The computing device of claim 14, wherein the compact datastructure is organized to optimize reference locality.
 20. The computingdevice of claim 14, wherein updating the compact data structure appendsdata after the trailer section.